import init from './init.js'
import render from './render.js'
import {lifeCycle} from './lifeCycle.js'
import initGlobalAPI from './globalApi/index.js'

function Vue(options){
    this._init(options)
}
//注册原型方法
init(Vue)  
    //  _init(options)  数据初始化 
    //  $mount(el)      和 编译模板生成render函数 ,挂载组件
render(Vue)  //  和 数据更新要走的
    //  _c(div,attrs,_v()+_s(msg))   创建虚拟dom
    //  _v(文本)   返回普通文本
    //  _s(msg)   返回变量文本
    //  _render()  执行render函数 生成完整虚拟dom
lifeCycle(Vue)
    //  _update(oldNode,newNode)  执行diff算法比对  更新dom

//注册全局api
initGlobalAPI(Vue)
   //  extend  创建vue子实例
   //  component 组件挂载
   //  mixin    


window.Vue=Vue
import {createElm, patch} from './vdom/patch'
import compilerToFunction from './compiler/index.js'
let vm1=new Vue({
    data:{
        msg:123
    }
})
let render1=compilerToFunction(`<div style='color:red;font-size:20px;' >
                                    <div style='color:yellow' key='a'>a</div>
                                    <div style='color:blue'  key='b'>bbbb</div>
                                    <div style='color:yellow' key='c'>ccccc</div>
                                    <div style='color:blue' key='d'>d</div>
                                </div>`)

let v1=render1.call(vm1)
let el1=createElm(v1)
let app2=document.querySelector('#app2')
app2.appendChild(el1)

let render2=compilerToFunction(`<div style='color:blue'>
                                    <div style='color:yellow' key='d'>dd</div>
                                    <div style='color:blue'  key='e'>e</div>
                                    <div style='color:yellow' key='c'>c</div>
                                    <div style='color:blue' key='a'>a</div>
                                    <div style='color:yellow' key='b'>bacd</div>
                                </div>`)
let v2=render2.call(vm1)

setTimeout(()=>{
    let res=patch(v1,v2)

    // app2.appendChild(res)
},5000)


export default Vue

